#include "TestUI.h"
#include "string.h"
#include "math.h"
#include "System.h"

//-------枚举id，唯一标识一个页面，防止有两个页面使用同一id
enum
{
    main_page_id = 0x00,
        logo_page_id,
        setting_page_id,
        curve_page_id,
        lock_page_id,
        about_page_id,
            about_wououi_page_id,
            about_page_version_id,
};
//--------定义页面对象
TitlePage main_page;
RaderPicPage logo_page;
ListPage setting_page;
WavePage curve_page;
DigitalPage lock_page;
ListPage about_page;
RadioPage about_wououi_page; //这两个相关页使用单选项RadioPage类型只是为了展示单选项页面而已
RadioPage about_page_version_page;
//--------定义每个页面需要的一些参数
//部分页面内选项个数
#define MAIN_PAGE_NUM   5   
#define LOGO_PAGE_NUM   4  
#define SETTING_PAGE_NUM     13   
#define CURVE_PAGE_NUM   2     
#define LOCK_PAGE_LABEL_NUM   2
#define ABOUT_PAGE_NUM   3   
#define ABOUT_WOUOUI_PAGE_NUM   9   
#define ABOUT_PAGEVERSION_NUM   8   

//定义部分页面选项
//********main页面的选项
Option mian_option_array[MAIN_PAGE_NUM] = 
{///{ order,max,min,step,int_val,text,} //option的成员顺序，但对单纯title的页面来说，只有text需要赋值
    {.text = "- Logo"},  //前两个字符是前缀，不显示，用于标识一般选项(-),二值选项(+),数值弹窗(~),确认弹窗($)
    {.text = "- Setting"},
    {.text = "- Curve"},
    {.text = "- DigLock"},
    {.text = "- Aoubt"},
};
//main页面的图标
Icon main_icon_array[MAIN_PAGE_NUM] = 
{
    [0]  = {0xFC,0xFE,0xFF,0x3F,0x1F,0x0F,0x07,0x03,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
            0x01,0x01,0x01,0x01,0x01,0x03,0x07,0x07,0x0F,0x1F,0x3F,0xFF,0xFE,0xFC,0xFF,0x01,
            0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,
            0x00,0x00,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0xC0,0x00,
            0x00,0x00,0x03,0x07,0x0F,0x1F,0x3E,0x3C,0x3C,0x3C,0x1E,0x1F,0x0F,0x03,0x00,0x00,
            0x1F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0xC0,0xF0,0xFF,0xCF,0xDF,0xFF,0xFF,0xFE,0xFC,
            0xF8,0xF8,0xF0,0xF0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xF0,0xF0,
            0xF8,0xF8,0xFC,0xFE,0xFF,0xFF,0xDF,0xCF}, //logo
    [1]  = {0xFC,0xFE,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x83,0x81,0x01,0x01,0x81,0xE1,0xE1,0xE1,
            0xE1,0x81,0x01,0x81,0x81,0x83,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFE,0xFC,0xFF,0x01,
            0x00,0x00,0x00,0xE0,0xE0,0xF3,0xFF,0xFF,0x3F,0x0F,0x07,0x07,0x03,0x03,0x07,0x07,
            0x0F,0x3F,0xFF,0xFF,0xF7,0xE0,0xE0,0x00,0x00,0x00,0x01,0xFF,0xFF,0xE0,0x80,0x00,
            0x00,0x01,0x01,0x3B,0x7F,0x7F,0x7F,0x3C,0x78,0xF8,0xF0,0xF0,0xF8,0x78,0x3C,0x3F,
            0x7F,0x7F,0x33,0x01,0x01,0x00,0x00,0x80,0xE0,0xFF,0xCF,0xDF,0xFF,0xFF,0xFE,0xFC,
            0xF8,0xF0,0xF0,0xE0,0xE0,0xE0,0xE0,0xE1,0xE1,0xE1,0xE1,0xE0,0xE0,0xE0,0xE0,0xF0,
            0xF0,0xF8,0xFC,0xFC,0xFF,0xFF,0xDF,0xCF}, // Setting
    [2]  = {0xFC,0xFE,0x07,0xF3,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0x03,0x03,
            0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xF3,0x07,0xFE,0xFC,0xFF,0xFF,
            0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xBF,0x3F,0x7F,0x20,0x08,0x8F,0x07,
            0x61,0x30,0x36,0x38,0x39,0x39,0x39,0x39,0x39,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xE7,
            0xE7,0xE7,0xE7,0xE7,0xC7,0xDB,0xC3,0xE1,0xF8,0xFC,0x04,0x01,0xFF,0xFF,0xFF,0xFF,
            0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xCF,0xDF,0xF8,0xF3,0xF7,0xF7,
            0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF0,0xF0,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,
            0xF7,0xF7,0xF7,0xF7,0xF3,0xF8,0xDF,0xCF}, //Curve
    [3]  = {0xFC,0xFE,0x1F,0x07,0x07,0xC3,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0x63,0x63,0x63,
            0x63,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xC3,0x07,0x07,0x1F,0xFE,0xFC,0xFF,0xFF,
            0x00,0x00,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x3F,0x01,0x00,0x00,0x3C,0x3C,0x00,0x00,
            0x01,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
            0x00,0xFF,0xFF,0xFF,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
            0x80,0xC0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xCF,0xDF,0xFE,0xF8,0xF8,0xF0,
            0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,
            0xF1,0xF1,0xF0,0xF8,0xF8,0xFE,0xDF,0xCF}, //DigitalLock
    [4]  = {0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x3F,0x1F,0x0F,0x0F,0x0F,0x07,0x07,0x07,
            0x07,0x0F,0x0F,0x0F,0x1F,0x3F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xFF,0xFF,
            0xFF,0x3F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xEE,0xE6,0x66,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
            0xF0,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1F,0x1F,0x08,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x60,0xF0,0xFF,0xFF,0xFF,0xFF,0xCF,0xDF,0xFF,0xFF,0xFF,0xFF,
            0xFF,0xFF,0xFF,0xFE,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,
            0xF8,0xF8,0xF8,0xF8,0xFF,0xFF,0xDF,0xCF} //about
};

//LOGO页面的参数
const uint8_t logo_wouo_pic[] = {0x00,0x00,0xF8,0xF0,0x80,0x00,0x00,0x00,0xE0,0xFC,0xE0,0x00,0x00,0x00,0x00,0xF0,
                                0xFC,0x04,0x18,0x30,0x70,0xE0,0xC0,0xE0,0xF0,0xF8,0x38,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x70,0x70,0xE0,0xC0,0xE0,0xF0,0x78,0x18,0x00,
                                0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0xF8,0x3F,0x03,0x01,0x1F,0x7E,0xF0,0xE0,0xFE,
                                0x7F,0x01,0x00,0x00,0xF8,0x8E,0x83,0x81,0xC1,0x41,0x71,0x3F,0x00,0x00,0x7F,0xC0,
                                0xC0,0xC0,0x60,0x30,0x7E,0xFF,0x00,0x00,0xFC,0x8E,0x83,0x81,0xC1,0x61,0x3B,0x1F,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
                                0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00}; //49*20
const uint8_t logo_ui_pic[] = {0x00,0x00,0x00,0xF0,0xFC,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFE,
                                0xFC,0x00,0x00,0x0C,0x0C,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x7F,
                                0xC0,0x80,0x80,0x80,0xC0,0xE0,0x70,0x38,0x1C,0xFF,0xFF,0xF8,0x00,0x00,0x80,0xC0,
                                0xFF,0x9F,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,
                                0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
                                0x00}; // 27*20
const uint8_t logo_page_pic[] = {0x00,0x00,0x00,0xF0,0xFC,0x0C,0x0C,0x0C,0x98,0xF0,0x00,0x00,0x00,0x00,0x80,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xCF,0x0C,0x0E,0x06,0x03,0x03,0x00,0x18,
                                0x2E,0x21,0x21,0x31,0x1E,0x3C,0x20,0x0C,0x1F,0x11,0x10,0x90,0xFF,0x00,0x1C,0x3E,
                                0x65,0x65,0x62,0x21,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x03,
                                0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //36*20
const uint8_t logo_version_pic[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xDC,0x9C,
                                0xD8,0xC0,0xC0,0xE8,0xFC,0xDC,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
                                0x01,0x01,0x00,0x0F,0x1F,0x1F,0x0F,0x0F,0x0F,0x07,0x83,0x80,0x80,0x00,0xC0,0xC0,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,
                                0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x83,0x83,
                                0xBB,0xBC,0xFC,0xFC,0xFC,0xB8,0x83,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xFF,0xFF,0xC0,0xC0,0x00,0x00,0xFE,0xFF,0xC3,0xC1,
                                0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x60,0x60,0x60,0x60,0xE0,0xC0,0x00,0x00,0x00,
                                0xFF,0xFF,0x0F,0x1C,0x38,0x70,0xE0,0x80,0x00,0x00,0x80,0xE0,0x7C,0x1F,0x01,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,
                                0xFF,0xFF,0x00,0xE0,0xFF,0x07,0x00,0x00,0x80,0xC0,0xE1,0x73,0x3F,0x1E,0x3F,0x71,
                                0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x00,0x00,
                                0x00,0x00,0x00,0x07,0x07,0x03,0x00,0x07,0x07,0x00,0x00,0x07,0x33,0x79,0x78,0x78,
                                0x30,0x80,0xC0,0xE0,0xC0,0x03,0x07,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,
                                0x02,0x03,0x03,0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //36*60 版
//镭射图片对象
RaderPic logo_rpp_array[LOGO_PAGE_NUM] = 
{//{pic,x,y,w,h,rd} //镭射图片的成员参数
    {logo_wouo_pic, 4, 8, 49, 20, RD_RIGHT_DOWN},
    {logo_ui_pic, 53, 8, 27, 20, RD_RIGHT_DOWN},
    {logo_page_pic, 20, 36, 36, 20, RD_RIGHT_DOWN},
    {logo_version_pic, 84, 2, 36, 60, RD_RIGHT_DOWN}
};

//设置的列表选项数组
Option setting_option_array[SETTING_PAGE_NUM] = 
{///{ order,max,min,step,int_val,text,} //option的成员顺序
    {.text = "- Setting"}, //第一个做说明标签，没有功能
    {0, 255, 0, 1, 0, "~ Tile Ani"},
    {0, 255, 0, 1, 0, "~ List Ani"}, //对于数值弹窗，需要给定最大最小值和步长
    {.text = "+ T Ufd Fm Scr", .step = 1,},
    {.text = "+ L Ufd Fm Scr", .step = 1,},
    {.text = "+ T Loop Mode", .step = 1,},
    {.text = "+ L Loop Mode", .step = 1,},
    {.text = "+ ValWin Bok", .step = 1,},
    {.text =  "+ ConWin Bok", .step = 1,},
    {.text =  "$ Dig Ripple", .step = 1,},
    {.text =  "+ RaderPicMode", .step = 1,}, //step为1,能够使用clcik控制取反，为0，则失能取反(通常用于需要外部接管这个变量的情况)
    {0, 10, 1, 1, 0, "~ RP_S_Rate"},
    {0, 100, 0, 1, 0, "~ RP_M_Rate"}, //因为没有办法给初始化的全局变量使用变量值进行初始化，所以int_val暂时先设为0
};

//curve页面的选项数组
Option curve_option_array[CURVE_PAGE_NUM] = 
{//{ order,max,min,step,int_val,text,} //option的成员顺序
    {.item_max = 50, .item_min = -50, .step = 0, .val = 0, .text = "sin" },
    {.item_max = 50, .item_min = -50, .step = 0, .val = 0, .text = "tri" }, //wave页面的option中text不需要前缀
};
int16_t n = 0; //曲线横坐标自增变量

//Lock页面参数
Option lock_option_array[3] =  //由于Digital页面有三个数字选项，所以，digital页面选项数组大小必须为3
{//{ order,max,min,step,int_val,text,} //option的成员顺序
    {.item_max = 99 , .item_min = 0, .step = 1, .val = 0, .text = NULL}, 
    {.item_max = 99 , .item_min = 0, .step = 1, .val = 0, .text = NULL}, 
    {.item_max = 99 , .item_min = 0, .step = 1, .val = 0, .text = NULL},  //设置每一个数字的上限值和步长 
} ;
String lock_label_array[LOCK_PAGE_LABEL_NUM] = {"Confirm", "Clear All"}; 
// uint8_t lock_password[3] = {56,34, 12}; //3个两位数字组成的密码(注意三个数字从0-2是从右到左)(两种形式的初始化均可)
uint8_t lock_password[3] = {[Digital_Pos_IndexLeft] = 12, [Digital_Pos_IndexMid] = 34, [Digital_Pos_IndexRight] = 56}; //3个两位数字组成的密码(注意三个数字从0-2是从右到左)
uint8_t lcok_page_state = 0; //0表示正常情况，1表示密码正确(Confirm后密码正确)，2表示清除所有位(ClearALL)

//about页面的选项数组
Option about_option_array[ABOUT_PAGE_NUM] = 
{
    {.text = "- About wouo"}, //第一项只是说明
    {.text = "- WouoUI origin"}, //原wououi的说明
    {.text = "- Page version"}, //Page version的说明
};

//about wououi页面的数组
Option about_wououi_option_array[ABOUT_WOUOUI_PAGE_NUM] =
{ //单选项需要以“=”开头
    {.text = "- From WouoUI1.2"},
    {.text = "- Thanks for the "},
    {.text = "  original author"},
    {.text = "- Bilibili UID:"},
    {.text = "= 9182439"},
    {.text = "- Github URL: "},
    {.text = "= https://"},
    {.text = "  github.com/"},
    {.text = "  RQNG/WouoUI"}
};
Option about_pageversion_array[ABOUT_PAGEVERSION_NUM] = 
{
    {.text = "- Page Version"},
    {.text = "- MyBilili UID:"},
    {.text = "= 679703519"},
    {.text = "- Github URL:"},
    {.text = "= https://"},
    {.text = "  github.com/"},
    {.text = "  Sheep118/WouoUI"},
    {.text = "  -PageVersion"},
};
//--------定义每个页面的回调函数

void MainPage_CallBack(uint8_t self_page_id,Option* select_item)
{
    switch (select_item->order)
    {
        case 0: OLED_UIJumpToPage(self_page_id,&logo_page); break;
        case 1: OLED_UIJumpToPage(self_page_id,&setting_page);  break;
        case 2: OLED_UIJumpToPage(self_page_id,&curve_page); break;
        case 3: OLED_UIJumpToPage(self_page_id,&lock_page); break;
        case 4: OLED_UIJumpToPage(self_page_id,&about_page); break;
        default: break;
    }
}

void SettingPage_CallBack(uint8_t self_page_id,Option* select_item)
{
    switch (select_item->order) //对选中项的真实参数值赋值
    { //由于第0项是说明文字“Setting”
        case 1: ui_para.ani_param[TILE_ANI] = select_item->val;break;//ani_tile
        case 2: ui_para.ani_param[LIST_ANI] = select_item->val;break;//ani_list
        case 3: ui_para.ufd_param[TILE_UFD] = select_item->val;break;//ani_tile
        case 4: ui_para.ufd_param[LIST_UFD] = select_item->val;break;//ani_list
        case 5: ui_para.loop_param[TILE_UFD] = select_item->val;break;//loop_tile
        case 6: ui_para.loop_param[LIST_UFD] = select_item->val;break;//loop_list
        case 7: ui_para.valwin_broken = select_item->val;break;//ValWin Broken
        case 8: ui_para.conwin_broken = select_item->val;break;//ConWin Broken
        case 9: ui_para.digital_ripple = select_item->val;break;//Digital Ripple Enable/not
        case 10: ui_para.raderpic_scan_mode = select_item->val;break;//RaderPic scan mode
        case 11: ui_para.raderpic_scan_rate = select_item->val;break;//RaderPic scan rate
        case 12: ui_para.raderpic_move_rate = select_item->val;break;//RaderPic move rate
    default:
      break;
    }
}

void LockPage_CallBack(uint8_t self_page_id,Option* select_item)
{
    switch (select_item->order)
    {
        case Digital_Pos_IndexLabel: //选中label项，并单击click的话
            if(strcmp(select_item->text, lock_label_array[0]) == 0) //“confirm”
            {
                if(lock_option_array[0].val == lock_password[0] && lock_option_array[1].val == lock_password[1] && lock_option_array[2].val == lock_password[2])
                //密码正确的话，转到logopage
                OLED_UIChangeCurrentPage(&logo_page); 
            }
            else if(strcmp(select_item->text, lock_label_array[1]) == 0) //“Clear All”
                OLED_DigitalPage_UpdateDigitalNumAnimation(&lock_page, 0, 0, 0, Digital_Direct_Increase);
                break;
        default:
            break;
    }
}

void About_CallBack(uint8_t self_page_id,Option* select_item)
{
    switch (select_item->order)
    {//第0项是说明文字
        case 1: OLED_UIJumpToPage(self_page_id,&about_wououi_page); break;
        case 2: OLED_UIJumpToPage(self_page_id,&about_page_version_page); break;
        default: break;
    }
}


//-------------一些需要用的内部函数
//生成三角波的函数
int16_t Triangle_Func(int16_t x)
{
    static int16_t ret = 0;
    if(x%20 != 0) ret+= (curve_option_array[1].item_max - curve_option_array[1].item_min)/2/19;
    else ret = curve_option_array[1].item_min/2 ; 
    return ret;
}

//--------------给主函数调用的接口函数

void TestUI_Init(void)
{
    OLED_Init();  //硬件的初始化
    LL_mDelay(100);
    OLED_ClearBuff(); //清空缓存
    OLED_RefreshBuff(); //刷新屏幕(清空屏幕)
    OLED_SetPointColor(1); //设置绘制颜色
    OLED_UiInit();  //必要的ui参数初始化
    //补充列表页面的初值
    setting_option_array[1].val = ui_para.ani_param[TILE_ANI];
    setting_option_array[2].val = ui_para.ani_param[LIST_ANI];
    setting_option_array[3].val = ui_para.ani_param[TILE_UFD];
    setting_option_array[4].val = ui_para.ani_param[LIST_UFD];
    setting_option_array[5].val = ui_para.ani_param[TILE_LOOP];
    setting_option_array[6].val = ui_para.ani_param[LIST_LOOP];
    setting_option_array[7].val = ui_para.valwin_broken;
    setting_option_array[8].val = ui_para.conwin_broken;
    setting_option_array[9].val = ui_para.digital_ripple;
    setting_option_array[10].val = ui_para.raderpic_scan_mode;
    setting_option_array[11].val = ui_para.raderpic_scan_rate;
    setting_option_array[12].val = ui_para.raderpic_move_rate;
    //设置界面选项
    OLED_TitlePageInit(&main_page, main_page_id, MAIN_PAGE_NUM, mian_option_array, main_icon_array, MainPage_CallBack);
    OLED_RaderPicPageInit(&logo_page, logo_page_id,  LOGO_PAGE_NUM, logo_rpp_array,Rader_Pic_Mode_Loop, NULL);
    OLED_ListPageInit(&setting_page, setting_page_id, SETTING_PAGE_NUM, setting_option_array, SettingPage_CallBack);
    OLED_WavePageInit(&curve_page, curve_page_id, CURVE_PAGE_NUM, curve_option_array, NULL);
    OLED_DigitalPageInit(&lock_page, lock_page_id, lock_option_array, LOCK_PAGE_LABEL_NUM, lock_label_array, '-', 0, 50, LockPage_CallBack);
    OLED_ListPageInit(&about_page, about_page_id,  ABOUT_PAGE_NUM, about_option_array, About_CallBack);
    OLED_RadioPageInit(&about_wououi_page, about_wououi_page_id,  ABOUT_WOUOUI_PAGE_NUM, about_wououi_option_array, NULL);
    OLED_RadioPageInit(&about_page_version_page,about_page_version_id,  ABOUT_PAGEVERSION_NUM, about_pageversion_array, NULL);
}


void TestUI_Proc(void)
{
    OLED_UIProc();
    OLED_UIWaveUpdateVal(&(curve_option_array[0]), sin(0.1*n)*(curve_option_array[0].item_max)*0.75); 
    OLED_UIWaveUpdateVal(&(curve_option_array[1]), Triangle_Func(n)); 
    n++;
}

